# 存放我们自定义的参数

from apiAtRun.parse.CaseParser import case_parser
from apiAtRun.utils.logRecord import Logger
import datetime
current_date = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
log_filename = f'logdata_{current_date}.log'

print("日志文件",log_filename)


log_record = Logger('CasePlugin_logger', log_filename)

class CasePlugin:
    """
    这里的方法名都不能改名字，因为用的是钩子函数
    是Pytest自带的，会在执行用例之前，自己去进行调佣的

    """

    def pytest_addoption(self,parser):
        """

        增加pytest运行的配置项
        :param parser:
        :return:
        """
        parser.addoption("--type", action="store", default = "yaml", help="测试用例类型")
        parser.addoption("--cases", action="store", default = ".\examples", help="测试用例目录")



    def pytest_generate_tests(self, metafunc):
        """
        主要用来生成测试用例的，相当于参数化


        :param metafunc:
        :return:
        """

        # 读取用户传过来的参数

        case_type = metafunc.config.getoption("type")   # 类型
        case_dir = metafunc.config.getoption("cases")   # 路径

        # 调用方法，获取测试用例数据
        case_Info = case_parser(case_type, case_dir)


        # 进行测试用例进行参数化，自动交给runner去进行执行





        if "caseInfo" in metafunc.fixturenames:
            metafunc.parametrize("caseInfo", case_Info["case_infos"],ids=case_Info["case_names"])









